package v1

import (
	"devops-super/api"
	"devops-super/internal/model/mymodel"
	"github.com/gogf/gf/v2/frame/g"
)

// DistributeTablesGetPageLstReq 分页查询请求
type DistributeTablesGetPageLstReq struct {
	g.Meta `method:"get" path:"/clusters/distribute-tables/page-list" summary:"分页获取分发表列表" tags:"集群分发表"`
	*api.PageLstReq
	ServerKey string   `json:"serverKey"` //注意看待为：数据库标识 而不是集群服务器
	DeptId    int      `json:"deptId"`
	TimeRange []string `json:"timeRange"` // 时间范围[开始,结束]
	TimeBy    string   `json:"timeBy"`
}

// DistributeTablesGetPageLstRes 分页查询响应
type DistributeTablesGetPageLstRes struct {
	*api.PageLstRes[*mymodel.DistributeTableResponse] // 使用实体作为响应数据
}

// DistributeTablesAddReq 添加分发表请求
type DistributeTablesAddReq struct {
	g.Meta    `method:"post" path:"/clusters/distribute-tables" summary:"新增分发表" tags:"集群分发表"`
	TimeBy    int    `v:"required#时间分片规则不能为空" json:"timeBy"`
	Time      string `json:"time"`
	ServerKey string `v:"required#数据库标识不能为空" json:"serverKey"`
	Table     string `v:"required#分表名称不能为空" json:"table"`
	Flag      string `v:"required#数据类型标识不能为空" json:"flag"`
}

// DistributeTablesAddRes 添加分发表响应
type DistributeTablesAddRes struct{}

// DistributeTablesUptReq 更新分发表请求
type DistributeTablesUptReq struct {
	g.Meta     `method:"put" path:"/clusters/distribute-tables/{id}" summary:"更新分发表" tags:"集群分发表"`
	Id         int    `v:"min:1#ID必须大于0" path:"id"`
	TimeBy     int    `v:"required#时间分片规则不能为空" json:"timeBy"`
	Time       string `json:"time"`
	ServerKey  string `v:"required#分库标识不能为空" json:"serverKey"`
	Table      string `v:"required#分表名称不能为空" json:"table"`
	Flag       string `v:"required#数据类型标识不能为空" json:"flag"`
	Status     int    `json:"status"`
	IsExpire   int    `v:"required#过期启用状态不能为空" json:"isExpire"`
	ExpireTime int64  `v:"required#ExpireTime不能为空" json:"expireTime" `
}

// DistributeTablesUptRes 更新分发表响应
type DistributeTablesUptRes struct{}

// DistributeTablesDelReq 删除分发表请求
type DistributeTablesDelReq struct {
	g.Meta `method:"delete" path:"/clusters/distribute-tables/{id}" summary:"删除分发表" tags:"集群分发表"`
	Id     int `v:"min:1#ID必须大于0" path:"id"`
}

// DistributeTablesDelRes 删除分发表响应
type DistributeTablesDelRes struct{}

// DistributeTablesGetOneReq 获取单条分发表请求
type DistributeTablesGetOneReq struct {
	g.Meta `method:"get" path:"/clusters/distribute-tables/{id}" summary:"获取分发表详情" tags:"集群分发表"`
	Id     int `v:"min:1#ID必须大于0" path:"id"`
}

// DistributeTablesGetOneRes 获取单条分发表响应
type DistributeTablesGetOneRes struct {
	Info *mymodel.DistributeTableResponse `json:"info"`
}

// DistributeTablesGetOptionsReq 获取分发表选项请求
type DistributeTablesGetOptionsReq struct {
	g.Meta     `method:"get" path:"/clusters/distribute-tables/options" summary:"获取分发表选项列表" tags:"集群分发表"`
	DeptId     int64  `json:"deptId"`     // DEPT-ID
	FieldKey   string `json:"fieldKey"`   // 选项值字段
	FieldLabel string `json:"fieldLabel"` // 选项标签字段
}

// DistributeTablesGetOptionsRes 获取分发表选项响应
type DistributeTablesGetOptionsRes struct {
	Options []*api.FormOptionsItem `json:"options"`
}
